package com.lazybones.base.engineer.common.enums;

public enum StatusEnum {
    //100：客户端在发送 POST 数据给服务器前，征询服务器情况，看服务器是否处理 POST 的数据，如果不处理，客户端则不上传 POST 数据，如果处理，则 POST 上传数据。常用于 POST 大数据传输
    REQUEST_READY(100,"服务器已收到浏览器的请求标头，并且现在已准备好发送请求正文",false),
    REQUEST_SWITCHING_PROTOCOLS(101,"服务器已经接受了客户端的请求，并将通过Upgrade消息头通知客户端采用不同的协议来完成这个请求",false),
    REQUEST_PROCESSING(102,"服务器已经收到并正在处理请求，目前还没有响应",false),
    REQUEST_EARLY_HINTS(103,"在服务器响应的HTTP消息之前返回一些响应头",false),
    SUCCESS(200,"请求成功！",true),
    SUCCESS_CREATED( 201,"（已创建）：请求成功并且服务器创建了新的资源",true),
    SUCCESS_UNDOING( 202,"（已创建）：服务器已经接收请求，但尚未处理",true),
    SUCCESS_UNAUTHORIZED_CREATE(203,"（非授权信息）：服务器已成功处理请求，但返回的信息可能来自另一来源",true),
    SUCCESS_NO_CONTENT(204,"服务器成功处理请求，但没有返回任何内容",true),
    SUCCESS_RESET_CONTENT(205,"服务器成功处理请求，但没有返回任何内容",true),
    SUCCESS_PARTIAL_REQUEST(206,"服务器成功处理了部分请求",true),
    SUCCESS_IM_USED(226,"服务器已成功处理浏览器的 GET 方法，以检索已缓存资源的更新版本",true),
    MORE_CHOICE(300,"针对请求，服务器可执行多种操作。服务器可根据请求者 (user agent) 选择一项操作，或提供操作列表供请求者选择",false),
    MOVE_NEW_PATH(301,"请求的网页已永久移动到新位置。服务器返回此响应（对 GET 或 HEAD 请求的响应）时，会自动将请求者转到新位置",false),
    TEMP_MOVE_PATH(302,"服务器目前从不同位置的网页响应请求，但请求者应继续使用原有位置来进行以后的请求",false),
    OTHER_PATH_GET(303,"请求者应当对不同的位置使用单独的 GET 请求来检索响应时，服务器返回此代码",false),
    PROXY_REQUEST_ONLY(305,"请求者只能使用代理访问请求的网页。如果服务器返回此响应，还表示请求者应使用代理",false),
    REQUEST_OLD_PATH(307,"服务器目前从不同位置的网页响应请求，但请求者应继续使用原有位置来进行以后的请求",false),
    BAD_REQUEST_ERROR(400,"服务器不理解请求的语法!",false),
    REQUEST_UNAUTHORIZED(401," 401 Unauthorized（未授权）：请求要求身份验证。对于需要登录的网页，服务器可能返回此响应。！",false),
    REQUEST_FORBIDDEN(403,"拒绝请求,权限不足",false),
    REQUEST_NET_FOUND(404,"服务器找不到请求的网页",false),
    REQUEST_DISABLE(405,"禁用请求中指定的方法",false),
    REQUEST_CANNOT_ACCEPT(406,"无法使用请求的内容特性响应请求的网页",false),
    REQUEST_NEED_PROXY(407,"此状态代码与 401（未授权）类似，但指定请求者应当授权使用代理",false),
    REQUEST_SERVER_TIMEOUT(408,"服务器等候请求时发生超时",false),
    REQUEST_CONFLICT_ERROR(409,"服务器无法处理浏览器的请求，因为与相关资源存在冲突",false),
    REQUEST_GONE_ERROR(410,"请求的资源将来将不再可用",false),
    REQUEST_LENGTH_REQUIRED(411,"请求的资源需要客户端指定一定的长度，通过 Content-Length 来定义",false),
    REQUEST_PRECONDITION_FAIL(412,"服务器不满足请求头字段中指示的一个或多个先决条件",false),
    REQUEST_PAYLOAD_TO_LARGE(413,"服务器拒绝处理请求，因为请求的负载大于服务器能够或愿意处理的",false),
    REQUEST_URL_TO_LARGE(414,"服务器拒绝处理请求，因为请求的负载大于服务器能够或愿意处理的",false),
    REQUEST_UNSUPPORTED_MEDIA_TYPE(415,"请求已被服务器拒绝，因为它不支持请求数据的媒体格式",false),
    REQUEST_RANGE_NOT_SATISFIABLE(416,"请求的 Range 头中指定的范围无法满足。原因可能是给定范围超出了目标 URI 数据的大小",false),
    CHECK_REPTILE_REQUEST(418," 服务器检测请求头，检查出你的操作疑似爬虫，总而拒绝",false),
    REQUEST_EXPECTATION_FAILED(417,"服务器无法满足请求的请求头的 Expect 字段中指定的要求的",false),
    REQUEST_MISDIRECTED_ERROR(421,"浏览器的请求已被重定向到其他服务器，该服务器无法产生响应",false),
    REQUEST_UNPROCESSABLE_ENTITY(422,"浏览器发出的请求中存在语义错误，服务器无法处理",false),
    REQUEST_LOCKED_ERROR(423,"对所需资源的访问被拒绝，因为它已被锁定",false),
    REQUEST_FAILED_DEPENDENCY(424,"浏览器发出的请求失败，因为它依赖于另一个请求，而该请求失败了",false),
    REQUEST_UPGRADE_REQUIRED(426,"当服务器拒绝使用当前协议执行给定的请求时，它可能愿意在客户端升级到不同的协议后这来执行请求",false),
    REQUEST_PRECONDITION_REQUIRED(428,"服务器要求在处理请求之前指定条件",false),
    REQUEST_TOO_MANY_REQUESTS(429,"用户在给定的时间内发送了太多请求（速率限制）时，这是由服务器生成的",false),
    REQUEST_HEADER_FIELDS_TOO_LARGE(431,"服务器无法处理请求，因为标头字段太大",false),
    REQUEST_UNAVAILABLE_FOR_LEGAL_REASONS(451,"服务器的运营商收到了禁止访问请求的资源的要求",false),
    REQUEST_CLIENT_CLOSED(499,"当 nginx 正在处理请求时，客户端关闭了连接，nginx 就会返回此状态码",false),
    SERVICE_ERROR(500,"服务器异常！",false),
    SERVICE_NO_READY(501,"服务器不具备完成请求的功能。例如，服务器无法识别请求方法时可能会返回此代码",false),
    SERVICE_NETWORK_ERROR(502,"服务器作为网关或代理，从上游服务器收到无效响应",false),
    SERVICE_CANNOT_USE(503,"服务器目前无法使用（由于超载或停机维护）",false),
    SERVICE_GATEWAY_TIMEOUT(504,"服务器作为网关或代理，但是没有及时从上游服务器收到请求",false),
    SERVICE_NOT_SUPPORTED(505,"服务器不支持请求中所用的 HTTP 协议版本 Not Supported",false),
    SERVICE_CONFIG_ERROR(506,"服务器内部配置错误",false),
    SERVICE_UNABLE_STORAGE(507,"服务器无法存储完成请求所必须的内容",false),
    SERVICE_LOOP_DETECTED(508,"服务器在处理请求时检测到无限循环",false),
    SERVICE_NOT_EXTENDED(510,"服务器需要进一步扩展才能满足请求",false),
    CLIENT_NETWORK_AUTHENTICATION_REQUIRED(511,"客户端需要进行身份验证才能获得访问权限",false),
    PARAM_INVALID(999,"参数验证异常！",false),
    UNKNOWN_ERROR(998,"未知错误！",false),
    NULL_ERROR(997,"空指针异常！",false),
    HTTP_CLIENT_ERROR(996,"客户端请求异常！",false),
    INDEX_OUT_ERROR(995,"下标越界异常",false),
    PARAM_Null_MAYBE(994,"参数可能为空！",false),
    PARAM_Null(993,"参数为空！",false)
            ;

    private final Integer code;
    private final String message;
    private Boolean success;

    StatusEnum(Integer code, String message, Boolean success) {
        this.code = code;
        this.message = message;
        this.success = success;
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    public Boolean getSuccess() {
        return success;
    }

    public void setSuccess(Boolean success) {
        this.success = success;
    }

}
